package com.ingenio.siot.adapter;

import java.io.IOException;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.ingenio.siot.Adapter;
import com.ingenio.siot.entity.Punto;
import com.ingenio.siot.entity.Recorrido;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;

public class RecorridoAdapter extends Adapter{
	
	public Recorrido devolverRecorrido(String descripcion) throws Exception{
    	Connection conn = null;
    	PreparedStatement stmt = null;
    	Recorrido r = new Recorrido();
    	try {
			conn = (Connection) abrirConexion();
    		String sel ="SELECT * from ubicaciones where descripcion = ?";
    		stmt = (PreparedStatement) conn.prepareStatement(sel);
    		stmt.setString(1, descripcion);
    		ResultSet result = stmt.executeQuery();
    		List<Punto> puntos = new ArrayList<Punto>();
    		Double lat;
    		Double lng;
    		Punto p = new Punto();
    		
    		while(result.next()){
    			p = new Punto();
    			lat = result.getDouble("latitud");
    			lng = result.getDouble("longitud");
    			p.setLatitud(lat);
    			p.setLongitud(lng);
    			puntos.add(p);
    		}
    		
    		r.setDescripcion(descripcion);
    		r.setPuntos(puntos);
		}
		catch (Exception e) {
			e.printStackTrace();
			throw new Exception("Error al conectar con la base de datos.", e);
		}
    	finally{
    		//conn.close();
    		cerrarConexion(conn);
    	}
    	return r;
    }
	public JSONObject devolverRecorridoJSON(String descripcion) throws Exception{
		
		JSONObject jRecorrido = new JSONObject();
		JSONArray jPuntosArray = new JSONArray();
		JSONObject jPto = new JSONObject();
				
		RecorridoAdapter ra = new RecorridoAdapter();
		Recorrido r = ra.devolverRecorrido(descripcion);
		
		List<Punto> puntos = r.getPuntos();
		jRecorrido.put("descripcion", descripcion);
		for (int i = 0; i < puntos.size(); i++) {
			Punto p = puntos.get(i);
			//System.out.println(puntos.get(i).getLongitud());
			jPto.put("lat", p.getLatitud());
			jPto.put("lng", p.getLongitud());
			
			jPuntosArray.put(jPto);
			p = null;			
			jPto = new JSONObject();
		}
		jRecorrido.put("puntos", jPuntosArray);
		return jRecorrido;
	}
	
	public static void main(String[] args) throws IOException, JSONException {
		RecorridoAdapter ra = new RecorridoAdapter();
		try {
			JSONObject jo = ra.devolverRecorridoJSON("TAXI");
			System.out.println(jo.toString());
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
